{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/tomasonjo/blogs/blob/master/news_wikification/CNET%20-%20News%20Wikification.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "* Updated to GDS 2.0 version\n",
        "* Link to original blog post: https://medium.com/neo4j/making-sense-of-news-the-knowledge-graph-way-d33810ce5005"
      ],
      "metadata": {
        "id": "LNGtlmwpUkys"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "sykJi7T4Uji8",
        "outputId": "146aefef-f929-4847-e0e6-39a42123efb0"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Requirement already satisfied: neo4j in /home/tomaz/anaconda3/lib/python3.8/site-packages (4.0.1)\n",
            "Requirement already satisfied: pandas in /home/tomaz/anaconda3/lib/python3.8/site-packages (1.0.5)\n",
            "Requirement already satisfied: seaborn in /home/tomaz/anaconda3/lib/python3.8/site-packages (0.11.1)\n",
            "Requirement already satisfied: pytz in /home/tomaz/anaconda3/lib/python3.8/site-packages (from neo4j) (2020.1)\n",
            "Requirement already satisfied: python-dateutil>=2.6.1 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from pandas) (2.8.1)\n",
            "Requirement already satisfied: numpy>=1.13.3 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from pandas) (1.18.4)\n",
            "Requirement already satisfied: scipy>=1.0 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from seaborn) (1.4.1)\n",
            "Requirement already satisfied: matplotlib>=2.2 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from seaborn) (3.3.0)\n",
            "Requirement already satisfied: six>=1.5 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from python-dateutil>=2.6.1->pandas) (1.15.0)\n",
            "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\n",
            "Requirement already satisfied: pillow>=6.2.0 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (7.2.0)\n",
            "Requirement already satisfied: cycler>=0.10 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /home/tomaz/anaconda3/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (1.2.0)\n"
          ]
        }
      ],
      "source": [
        "!pip install neo4j pandas seaborn"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "KoWOwrO3UjjA"
      },
      "outputs": [],
      "source": [
        "%matplotlib inline\n",
        "import seaborn as sns\n",
        "from matplotlib import pyplot\n",
        "import pandas as pd\n",
        "from neo4j import GraphDatabase\n",
        "\n",
        "driver = GraphDatabase.driver('bolt://localhost:7687', auth=('neo4j', 'letmein'))\n",
        "\n",
        "def run_query(query, params={}):\n",
        "    with driver.session() as session:\n",
        "        result = session.run(query, params)\n",
        "        return pd.DataFrame([r.values() for r in result], columns=result.keys())"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "y75xywG9UjjB"
      },
      "source": [
        "A wealth of information is being produced every day on the internet. Understanding the news and other content generating websites is becoming increasingly crucial to successfully running a business. It can help you spot opportunities, generate new leads, or provide indicators about the economy. In this blog post, I want to show you how you can create a news monitoring data pipeline that combines Natural language processing and knowledge graphs technologies.\n",
        "\n",
        "The data pipeline will consist of three parts. In the first part, we will scrape articles from an internet provider of news. Next, we will run the articles through an NLP pipeline and store results in the form of a knowledge graph. In the last part of the data pipeline, we will enrich our knowledge with information from the WikiData API. To demonstrate the benefits of using a knowledge graph to store the information from the data pipeline, we will perform simple network analysis and try to find insights.\n",
        "\n",
        "We will be using Neo4j to store our knowledge graph. If you want to follow along with this blog post, you need to download Neo4j and install both the APOC and Graph Data Science libraries.Our graph model consists of articles and their tags. Each article has many sections of text. Once we run the section text through the NLP pipeline, we will extract and store mentioned entities back to our graph.We will start by defining unique constraints for our graph.\n",
        "Unique constraints are used to ensure data integrity as well as to optimize cypher query performance."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "_zxfXSjzUjjD",
        "outputId": "06a15bde-b139-4526-9606-45ff2bce8c72"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"CREATE CONSTRAINT IF NOT EXISTS ON (a:Article) ASSERT a.url IS UNIQUE;\")\n",
        "run_query(\"CREATE CONSTRAINT IF NOT EXISTS ON (e:Entity) ASSERT e.wikiDataItemId is UNIQUE;\")\n",
        "run_query(\"CREATE CONSTRAINT IF NOT EXISTS ON (t:Tag) ASSERT t.name is UNIQUE;\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "d_JvwcKWUjjE"
      },
      "source": [
        "## Internet news scraping\n",
        "We will scrape the CNET news portal. I have chosen the CNET portal because it has the most consistent HTML structure, making it easier to demonstrate the data pipeline concept without focusing on the scraping element. We will use <code>apoc.load.html</code> procedure for the HTML scraping. It uses jsoup under the hood. Find more information in the documentation.\n",
        "First, we will iterate over popular topics and store the link of the last dozen of articles for each topic in Neo4j."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "-TtQRGU9UjjF",
        "outputId": "ac1993ea-7e66-4ff7-a7fa-489b4dea08c0"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "CALL apoc.load.html(\"https://www.cnet.com/news/\", \n",
        "  {topics:\"div.tag-listing > ul > li > a\"}) YIELD value\n",
        "UNWIND value.topics as topic  \n",
        "WITH \"https://www.cnet.com\" + topic.attributes.href as link\n",
        "CALL apoc.load.html(link, {article:\"div.row.asset > div > a\"}) YIELD value as articles\n",
        "UNWIND articles.article as article\n",
        "WITH distinct \"https://www.cnet.com\" + article.attributes.href as article_link\n",
        "MERGE (a:Article{url:article_link});\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jYfZ8X_4UjjG"
      },
      "source": [
        "Now that we have the links to the articles, we can go ahead and scrape their content as well as their tags and publishing date. We will store the results according to the graph schema we defined in the previous section."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "qyODXk5eUjjH",
        "outputId": "f12519d1-fda2-4305-9628-e2ba10a385aa"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (a:Article)\n",
        "CALL apoc.load.html(a.url,\n",
        "{date:\"time\", title:\"h1.speakableText\", text:\"div.article-main-body > p\", tags: \"div.tagList > a\"}) YIELD value\n",
        "SET a.datetime = datetime(value.date[0].attributes.datetime)\n",
        "FOREACH (_ IN CASE WHEN value.title[0].text IS NOT NULL THEN [true] ELSE [] END | \n",
        "           CREATE (a)-[:HAS_TITLE]->(:Section{text:value.title[0].text})\n",
        ")\n",
        "FOREACH (t in value.tags | \n",
        "MERGE (tag:Tag{name:t.text}) MERGE (a)-[:HAS_TAG]->(tag)\n",
        ")\n",
        "WITH a, value.text as texts\n",
        "UNWIND texts as text\n",
        "WITH a,text\n",
        "WHERE text.text IS NOT NULL\n",
        "CREATE (a)-[:HAS_SECTION]->(:Section{text:text.text});\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-Tm1nLlGUjjI"
      },
      "source": [
        "I did not want to complicate the cypher query that stores the results of the articles even more, so we will have to perform a minor cleanup of tags before we continue."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "gFtbvPfiUjjI",
        "outputId": "542c8cef-48b4-416e-e546-cbf2e3ed9acb"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (n:Tag)\n",
        "WHERE n.name CONTAINS \"Notification\"\n",
        "DETACH DELETE n;\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TLPZVUgHUjjJ"
      },
      "source": [
        "Let's evaluate our scraping process and look at how many of the articles have been successfully scraped."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "XtvLjiMvUjjJ",
        "outputId": "607bcc05-ef7c-4d3f-e197-de3a935f334e"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (a:Article)\n",
        "RETURN exists((a)-[:HAS_SECTION]->()) as scraped_articles, count(*) as count\n",
        "\"\"\")\n",
        "ax = sns.barplot(x=\"scraped_articles\", y=\"count\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Qvk5SxGmUjjK"
      },
      "source": [
        "In my case, I have successfully collected the information for 245 articles. Unless you have a time machine, you won't be able to recreate this analysis identically. I have scraped the website on the 30th of January 2021, and you will probably do it later. I have prepared most of the analysis queries generically, so they will work regardless of the date you choose to scrape the news.\n",
        "\n",
        "Let's also examine the most frequent tags of the articles."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "tF41UbhSUjjK",
        "outputId": "677bb0ab-4886-4ee3-a50f-706d09d80ee1"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (n:Tag)\n",
        "RETURN n.name as tag, size((n)<-[:HAS_TAG]-()) as articles\n",
        "ORDER BY articles DESC\n",
        "LIMIT 10\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"tag\", y=\"articles\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vlO8VI0wUjjL"
      },
      "source": [
        "All charts in this blog post are made using the Seaborn library. CNET Apps Today is the most frequent tag. I think that's just a generic tag for daily news. We can observe that they have custom tags for various big companies such as Amazon, Apple, and Google.\n",
        "### Named Entity Linking - Wikification\n",
        "In my previous blog post, we have already covered the Named Entity Recognition techniques to create a knowledge graph. Here, we will take it up a notch and delve into Named Entity Linking. First of all, what exactly is Named Entity Linking?\n",
        "Image by Aparravi on Wikipedia. Licensed under CC BY-SA 4.0Named entity linking is an upgrade to the entity recognition technique. It starts by recognizing all the entities in the text. Once it finishes the named entity recognition process, it tries to link those entities to a target knowledge base. Usually, the target knowledge bases are Wikipedia or DBpedia, but there are other knowledge bases out there as well. In the above example, we can observe that the named entity recognition process recognized Paris as an entity. The next step is to link it to a target entity in a knowledge base. Here, it uses Wikipedia as the target knowledge base. This is also known as the wikification process. The entity linking process is a bit tricky as we can see that many entities exist in Wikipedia that have Paris in their title. So, as a part of the entity linking process, the NLP model also does the entity disambiguation.\n",
        "There are a dozen Entity linking models out there. Some of them are:\n",
        "* http://wikifier.org/\n",
        "* https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/ambiverse-nlu/aida\n",
        "* https://github.com/informagi/REL\n",
        "* https://github.com/facebookresearch/BLINK\n",
        "\n",
        "I am from Slovenia, so my biased decision is to use the Slovenian solution Wikifier [1]. They don't actually offer their NLP model, but they have a free to use API endpoint. All you have to do is to register. They don't even want your password or email, which is nice of them. The Wikifier supports more than 100 languages. It also features some parameters you can use to fine-tune the results. I have noticed that the most dominant parameter is the *pageRankSqThreshold* parameter, which you can use to optimize either recall or accuracy of the model.\n",
        "\n",
        "The APOC library has the <code>apoc.load.json</code> procedure, which you can use to retrieve results from any API endpoints. If you are dealing with a larger amount of data, you will want to use the <code>apoc.periodic.iterate</code> procedure for batching purposes. If we put it all together, the following cypher query will fetch the annotation results for each section from the API endpoint and store the results to Neo4j."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "uvIfDtpfUjjL",
        "outputId": "091143fb-5875-4486-ec33-6b678d48c1e8"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>batches</th>\n",
              "      <th>total</th>\n",
              "      <th>timeTaken</th>\n",
              "      <th>committedOperations</th>\n",
              "      <th>failedOperations</th>\n",
              "      <th>failedBatches</th>\n",
              "      <th>retries</th>\n",
              "      <th>errorMessages</th>\n",
              "      <th>batch</th>\n",
              "      <th>operations</th>\n",
              "      <th>wasTerminated</th>\n",
              "      <th>failedParams</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>38</td>\n",
              "      <td>3722</td>\n",
              "      <td>3997</td>\n",
              "      <td>3722</td>\n",
              "      <td>0</td>\n",
              "      <td>0</td>\n",
              "      <td>0</td>\n",
              "      <td>{}</td>\n",
              "      <td>{'total': 38, 'committed': 38, 'failed': 0, 'e...</td>\n",
              "      <td>{'total': 3722, 'committed': 3722, 'failed': 0...</td>\n",
              "      <td>False</td>\n",
              "      <td>{}</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   batches  total  timeTaken  committedOperations  failedOperations  \\\n",
              "0       38   3722       3997                 3722                 0   \n",
              "\n",
              "   failedBatches  retries errorMessages  \\\n",
              "0              0        0            {}   \n",
              "\n",
              "                                               batch  \\\n",
              "0  {'total': 38, 'committed': 38, 'failed': 0, 'e...   \n",
              "\n",
              "                                          operations  wasTerminated  \\\n",
              "0  {'total': 3722, 'committed': 3722, 'failed': 0...          False   \n",
              "\n",
              "  failedParams  \n",
              "0           {}  "
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "user_key = \"insert-user-key\"\n",
        "run_query(\"\"\"\n",
        "CALL apoc.periodic.iterate('\n",
        " MATCH (s:Section) RETURN s\n",
        " ','\n",
        " WITH s, \"http://www.wikifier.org/annotate-article?\" +\n",
        "        \"text=\" + s.text + \"&\" +\n",
        "        \"lang=en&\" +\n",
        "        \"pageRankSqThreshold=0.80&\" +\n",
        "        \"applyPageRankSqThreshold=true&\" +\n",
        "        \"nTopDfValuesToIgnore=200&\" +\n",
        "        \"nWordsToIgnoreFromList=200&\" +\n",
        "        \"minLinkFrequency=100&\" + \n",
        "        \"maxMentionEntropy=10&\" +\n",
        "        \"wikiDataClasses=false&\" +\n",
        "        \"wikiDataClassIds=false&\" +\n",
        "        \"userKey=\" + $userKey as url\n",
        "CALL apoc.load.json(url) YIELD value\n",
        "UNWIND value.annotations as annotation\n",
        "MERGE (e:Entity{wikiDataItemId:annotation.wikiDataItemId})\n",
        "ON CREATE SET e.title = annotation.title, e.url = annotation.url\n",
        "MERGE (s)-[:HAS_ENTITY]->(e)',\n",
        "{batchSize:100, params: {userKey:$user_key}})\n",
        "\"\"\", {\"user_key\":user_key})"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FYt0YqRVUjjM"
      },
      "source": [
        "The named entity linking process will take a couple of minutes. We can now check the most frequently mentioned entities."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "Un8oiAiNUjjM",
        "outputId": "0112193e-fbef-4d31-fd6e-8b95ad459c15"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (e:Entity)\n",
        "RETURN e.title as entity, size((e)<--()) as mentions\n",
        "ORDER BY mentions DESC LIMIT 10;\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"entity\", y=\"mentions\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pqATvtz2UjjM"
      },
      "source": [
        "Apple Inc is the most frequently mentioned entity. I am guessing that all dollar signs or USD mentions get linked to the United States dollar. We call also examine the most frequently mentioned by article tags."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "477pHCcVUjjN",
        "outputId": "04393b1f-bfd7-4e69-956b-ad29d23a8949"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>tag</th>\n",
              "      <th>top_3_mentions</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Virtual Reality</td>\n",
              "      <td>[Virtual reality, Apple Inc., Facebook]</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Apple</td>\n",
              "      <td>[Apple Inc., Virtual reality, IPhone]</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Wearable Tech</td>\n",
              "      <td>[Apple Inc., Virtual reality, Apple Watch]</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>TV and Movies</td>\n",
              "      <td>[The Walt Disney Company, Film, HBO]</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Augmented reality (AR)</td>\n",
              "      <td>[Virtual reality, Apple Inc., Film]</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                      tag                              top_3_mentions\n",
              "0         Virtual Reality     [Virtual reality, Apple Inc., Facebook]\n",
              "1                   Apple       [Apple Inc., Virtual reality, IPhone]\n",
              "2           Wearable Tech  [Apple Inc., Virtual reality, Apple Watch]\n",
              "3           TV and Movies        [The Walt Disney Company, Film, HBO]\n",
              "4  Augmented reality (AR)         [Virtual reality, Apple Inc., Film]"
            ]
          },
          "execution_count": 11,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (e:Entity)<-[:HAS_ENTITY]-()<-[:HAS_SECTION]-()-[:HAS_TAG]->(tag)\n",
        "WITH tag.name as tag, e.title as title, count(*) as mentions\n",
        "ORDER BY mentions DESC\n",
        "RETURN tag, collect(title)[..3] as top_3_mentions\n",
        "LIMIT 5;\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ca1FW0OLUjjN"
      },
      "source": [
        "### WikiData enrichment\n",
        "A bonus to using the wikification process is that we have the WikiData item id of our entities. This makes it very easy for us to scrape the WikiData API for additional information. Let's say we want to define all business and person entities. We will fetch the entity classes from WikiData API and use that information to group the entities. Again we will use the <code>apoc.load.json</code> procedure to retrieve the response from an API endpoint."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "u1_a7TpcUjjN",
        "outputId": "5434d053-b677-4bae-d9c4-9898b39cf3ff"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "// Iterate over entities\n",
        "MATCH (e:Entity)\n",
        "// Prepare a SparQL query\n",
        "WITH 'SELECT * WHERE{ ?item rdfs:label ?name .filter (?item = wd:' + e.wikiDataItemId + ') filter (lang(?name) = \"en\" ) . ' +\n",
        "      'OPTIONAL{ ?item wdt:P31 [rdfs:label ?class] .filter (lang(?class)=\"en\") }}' AS sparql, e\n",
        "// make a request to Wikidata\n",
        "CALL apoc.load.jsonParams(\n",
        "    \"https://query.wikidata.org/sparql?query=\" + \n",
        "    sparql,\n",
        "     { Accept: \"application/sparql-results+json\"}, null)\n",
        "YIELD value\n",
        "UNWIND value['results']['bindings'] as row\n",
        "FOREACH(ignoreme in case when row['class'] is not null then [1] else [] end | \n",
        "        MERGE (c:Class{name:row['class']['value']})\n",
        "        MERGE (e)-[:INSTANCE_OF]->(c));    \n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tLtO4GA2UjjO"
      },
      "source": [
        "We will continue by inspecting the most frequent classes of the entities."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "un2UutobUjjO",
        "outputId": "493eccce-8034-41fd-b034-78f9956670e1"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7MAAAIYCAYAAAC/srv2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAApkklEQVR4nO3de7gtZ10f8O+PBAEBgZBjGkLgRBprQRHwiChWI6AgVoMCESoQ0IeABSxVLEipjQoWBbUFLTXhElAEQW5RKJCGq0gIJ+QeBFJyKMSQHO6JCJLw9o95d7Kys/Y+65yctfd+Tz6f51nPnjVrZtZv3jUza75rLrtaawEAAICR3GyzCwAAAIC9JcwCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMNZWpitqiOr6t1VdVFVXVhV/6H3P7GqLq2qc/rjoTPj/EZVXVxVH6uqBy+rNgAAAMZWy/o/s1V1eJLDW2sfqarbJjkrycOSHJfkqtbaC1cNf/ckr0ly3yR3SvJ/knxna+2apRQIAADAsA5e1oRba5cluax3X1lVH01yxDqjHJvkta21rye5pKouzhRsP7jWCIceemjbvn37/isaAACALeOss876XGtt27zXlhZmZ1XV9iT3TvKhJPdP8tSqelySnUl+rbX2xUxB94yZ0T6TOeG3qk5IckKS3OUud8nOnTuXWzwAAACboqo+tdZrS78BVFXdJskbkjy9tfaVJC9Jcrck98p05PYP9mZ6rbWTWms7Wms7tm2bG9ABAAA4wC01zFbVzTMF2Ve31t6YJK21y1tr17TWvpnk5EynEifJpUmOnBn9zr0fAAAAXM8y72ZcSV6W5KOttT+c6X/4zGA/m+SC3n1qkkdV1S2q6qgkRyc5c1n1AQAAMK5lXjN7/ySPTXJ+VZ3T+z07yaOr6l5JWpJdSZ6UJK21C6vqdUkuSnJ1kqe4kzEAAADzLPNuxn+bpOa89LZ1xnlekuctqyYAAAAODEu/ARQAAADsb8IsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAM5+DNLmDZjjpq12aXsKVdcsn2zS4BAABgrzkyCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGM7SwmxVHVlV766qi6rqwqr6D73/IVV1WlV9ov+9Q+9fVfWiqrq4qs6rqvssqzYAAADGtswjs1cn+bXW2t2T3C/JU6rq7kmeleT01trRSU7vz5PkJ5Mc3R8nJHnJEmsDAABgYEsLs621y1prH+ndVyb5aJIjkhyb5JV9sFcmeVjvPjbJq9rkjCS3r6rDl1UfAAAA49qQa2aranuSeyf5UJLDWmuX9Zc+m+Sw3n1Ekk/PjPaZ3m/1tE6oqp1VtXP37t3LKxoAAIAta+lhtqpuk+QNSZ7eWvvK7GuttZak7c30WmsntdZ2tNZ2bNu2bT9WCgAAwCiWGmar6uaZguyrW2tv7L0vXzl9uP+9ove/NMmRM6PfufcDAACA61nm3YwrycuSfLS19oczL52a5PjefXySt8z0f1y/q/H9knx55nRkAAAAuNbBS5z2/ZM8Nsn5VXVO7/fsJM9P8rqq+qUkn0pyXH/tbUkemuTiJF9N8oQl1gYAAMDAlhZmW2t/m6TWePmBc4ZvSZ6yrHoAAAA4cGzI3YwBAABgfxJmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOMIsAAAAwxFmAQAAGI4wCwAAwHCEWQAAAIYjzAIAADAcYRYAAIDhCLMAAAAMR5gFAABgOEsLs1X18qq6oqoumOl3YlVdWlXn9MdDZ177jaq6uKo+VlUPXlZdAAAAjG+ZR2ZPSfKQOf3/qLV2r/54W5JU1d2TPCrJPfo4/7OqDlpibQAAAAxsaWG2tfa+JF9YcPBjk7y2tfb11tolSS5Oct9l1QYAAMDYNuOa2adW1Xn9NOQ79H5HJPn0zDCf6f1uoKpOqKqdVbVz9+7dy64VAACALWijw+xLktwtyb2SXJbkD/Z2Aq21k1prO1prO7Zt27afywMAAGAEGxpmW2uXt9auaa19M8nJue5U4kuTHDkz6J17PwAAALiBDQ2zVXX4zNOfTbJyp+NTkzyqqm5RVUclOTrJmRtZGwAAAOM4eFkTrqrXJDkmyaFV9Zkk/zXJMVV1ryQtya4kT0qS1tqFVfW6JBcluTrJU1pr1yyrNgAAAMa2tDDbWnv0nN4vW2f45yV53rLqAQAA4MCxGXczBgAAgBtFmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMJyFwmxVnb5IPwAAANgIB6/3YlXdMsm3Jjm0qu6QpPpL35bkiCXXBgAAAHOtG2aTPCnJ05PcKclZuS7MfiXJHy+vLAAAAFjbumG2tfY/kvyPqnpaa+3FG1QTAAAArGtPR2aTJK21F1fVDyXZPjtOa+1VS6oLAAAA1rRQmK2qP0tytyTnJLmm925JhFkAAAA23EJhNsmOJHdvrbVlFgMAAACLWPT/zF6Q5F8ssxAAAABY1KJHZg9NclFVnZnk6ys9W2s/s5SqAAAAYB2LhtkTl1kEAAAA7I1F72b83mUXAgAAAIta9G7GV2a6e3GSfEuSmyf5x9baty2rMAAAAFjLokdmb7vSXVWV5Ngk91tWUQAAALCeRe9mfK02eXOSB+//cgAAAGDPFj3N+Odmnt4s0/+d/dpSKgIAAIA9WPRuxj890311kl2ZTjUGAACADbfoNbNPWHYhAAAAsKiFrpmtqjtX1Zuq6or+eENV3XnZxQEAAMA8i94A6hVJTk1yp/74694PAAAANtyiYXZba+0VrbWr++OUJNuWWBcAAACsadEw+/mqekxVHdQfj0ny+WUWBgAAAGtZNMz+YpLjknw2yWVJHpHk8UuqCQAAANa16L/m+e0kx7fWvpgkVXVIkhdmCrkAAACwoRY9MnvPlSCbJK21LyS593JKAgAAgPUtGmZvVlV3WHnSj8wuelQXAAAA9qtFA+kfJPlgVb2+P39kkuctpyQAAABY30JhtrX2qqrameQBvdfPtdYuWl5ZAAAAsLaFTxXu4VWABQAAYNMtes0sAAAAbBnCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwnKWF2ap6eVVdUVUXzPQ7pKpOq6pP9L936P2rql5UVRdX1XlVdZ9l1QUAAMD4lnlk9pQkD1nV71lJTm+tHZ3k9P48SX4yydH9cUKSlyyxLgAAAAa3tDDbWntfki+s6n1sklf27lcmedhM/1e1yRlJbl9Vhy+rNgAAAMa20dfMHtZau6x3fzbJYb37iCSfnhnuM73fDVTVCVW1s6p27t69e3mVAgAAsGVt2g2gWmstSduH8U5qre1ore3Ytm3bEioDAABgq9voMHv5yunD/e8Vvf+lSY6cGe7OvR8AAADcwEaH2VOTHN+7j0/ylpn+j+t3Nb5fki/PnI4MAAAA13PwsiZcVa9JckySQ6vqM0n+a5LnJ3ldVf1Skk8lOa4P/rYkD01ycZKvJnnCsuoCAABgfEsLs621R6/x0gPnDNuSPGVZtQAAAHBgWVqY5abjqKN2bXYJW9oll2zf7BIAAOCAs2l3MwYAAIB9JcwCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwnIM3uwBgMUcdtWuzS9iyLrlk+2aXAADABnNkFgAAgOEIswAAAAzHacYAnVO51+ZUbgBgq3FkFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYzsGbXQAANx1HHbVrs0vY0i65ZPtmlwAAw3BkFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4B2/Gm1bVriRXJrkmydWttR1VdUiSv0yyPcmuJMe11r64GfUBAACwtW3mkdkfa63dq7W2oz9/VpLTW2tHJzm9PwcAAIAb2EqnGR+b5JW9+5VJHrZ5pQAAALCVbVaYbUneWVVnVdUJvd9hrbXLevdnkxw2b8SqOqGqdlbVzt27d29ErQAAAGwxm3LNbJIfbq1dWlXfnuS0qvr72Rdba62q2rwRW2snJTkpSXbs2DF3GAAAAA5sm3JktrV2af97RZI3Jblvksur6vAk6X+v2IzaAAAA2Po2PMxW1a2r6rYr3Ul+IskFSU5Ncnwf7Pgkb9no2gAAABjDZpxmfFiSN1XVyvv/RWvt7VX14SSvq6pfSvKpJMdtQm0AAAAMYMPDbGvtk0m+d07/zyd54EbXAwAAwHi20r/mAQAAgIUIswAAAAxHmAUAAGA4wiwAAADD2Yy7GQMAS3TUUbs2u4Qt65JLtm92CQDsJ47MAgAAMBxhFgAAgOEIswAAAAxHmAUAAGA4wiwAAADDcTdjAIC95I7Ra3PHaGCjODILAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAzH3YwBANhy3DF6fe4aDY7MAgAAMCBhFgAAgOEIswAAAAzHNbMAAHAT5Lrk9e2v65K189pubBs7MgsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4QizAAAADEeYBQAAYDjCLAAAAMMRZgEAABiOMAsAAMBwhFkAAACGI8wCAAAwHGEWAACA4Wy5MFtVD6mqj1XVxVX1rM2uBwAAgK1nS4XZqjooyZ8k+ckkd0/y6Kq6++ZWBQAAwFazpcJskvsmubi19snW2j8neW2SYze5JgAAALaYgze7gFWOSPLpmeefSfIDswNU1QlJTuhPr6qqj21QbfvLoUk+t9lFrKja7AqWQhsvnzbeGFumnbXxxjhA21kbb4wt087aeGMcoO2sjZdvxDa+61ovbLUwu0ettZOSnLTZdeyrqtrZWtux2XUcyLTx8mnjjaGdl08bL5823hjaefm08fJp4+U70Np4q51mfGmSI2ee37n3AwAAgGtttTD74SRHV9VRVfUtSR6V5NRNrgkAAIAtZkudZtxau7qqnprkHUkOSvLy1tqFm1zW/jbsKdID0cbLp403hnZePm28fNp4Y2jn5dPGy6eNl++AauNqrW12DQAAALBXttppxgAAALBHwiwAAADDEWb3QlVtr6oLNruOA8n+aNOqulNV/dX+qmkrqKrbV9W/X3DYq/bxPfbYblX1d/sy7f3pQPl8q+phVXX3Jb/Hpn9e+0NVvaeqbvS/Dbgxy87stqmqdlTVi/ZhGr9dVQ/awzAnVtUzFh1+BFX10mUu61X19Kr61v013Aiq6pFV9dGqevd+mt4BsaxtBQfScrav9va7p6qOqaq/2cf3usm293r7zPtru1tVb+v7oAvvh24218zuharanuRvWmvfvdm1HCi06Xx70y5VdVVr7TbLr2rjVdXBrbWrN7uO/aGqTsn0mS4crhad/wOpnZIpzCZ5Rmtt5ybWsD0bsG2qqhOTXNVae+Ey32d/q6qDWmvXbNJ770qyo7X2uf0x3FaxXptW1duTPLe19rcbXBZ7sN5ytpnryVZWVcdk2sb/230Yd1duou29kfvMI+2fOzK79w6qqpOr6sKqemdV3Wr2KEJVHdpXtFTV46vqzVV1WlXtqqqnVtWvVtXZVXVGVR3Sh3tiVX24qs6tqjes/OJUVadU1Yuq6u+q6pNV9YhNm+vlOriqXt1/df6rqvrW3l6HJtceFXlP7/7RqjqnP86uqtuuOoLy+Kp6Y1W9vao+UVW/v/ImVfUTVfXBqvpIVb2+qm7T+z+/qi6qqvOq6oW93yOr6oL+mbxvw1skeX6Su/X5fEGv6df7cnJeVf3WvJHmDdPn7ykzw5xYVc9Y1W73qKoz+/udV1VH9/5X9b9VVS/obXJ+Vf18739MX/7/qqr+vn+ONaeuX5lp49f2freuqpf39z27qo7t/R9fVadW1buSnL6qzoN6HSvz+KTe//Cqel+v/4Kq+jf752NYX1U9Zqbd/rTXd1VVPa8vO2dU1WFV9UNJfibJC/qwd+uPt1fVWVX1/qr6rj7NU6rqf1XVh5L8fv+8/qwvu5+oqifOtP37q+rUJBf1fiuf19z2WGsduJFt8OY+DxdW1Qkz/R/S3+fcqjq997tvf/+za9qu/ave/1ZV9dqatgFvSnKrmemstd7uqqr/1udxZ1Xdp6reUVX/t6qe3IdZvey8sLfHeVX1tDnz8n293nOTzK4z1x5FqDnboN7/mX3dOLeqnj/zWT5ipt7f78OcWVX/cs77rx7+t/p8nz+zfMxdb2Zee2uv4YK6bj19YB/2/D7uLfrn8/o15nG9Nv+9qvpIkkeuM9zsd+IvVdXHe70nV9Ufz8zrut9v8+anqn4lyZ2SvLv6UcqqeklfBi6s67Z784bb78v/ovqyuLKNXP1dN9umj+6f0wVV9Xt93N9M8sNJXlbT9m/h7WAf9pS6btv9H/uws8vaDZaP3n/uMjiiqnpcb6tza9qebq+qd/V+p1fVXfpw17ZLf76yTZ37XbfGcnZVVf1BTduR/1xVb56Z3o/XtI07oOypnfprD+n9PpLk52bGPbH62Sn9+QX981l0/b+ptfcN9pmTxba7s6rqNlX1ir5un1dVD+/9V/a/r7cfWlWvqqqHzYz/6pr5/tlUrTWPBR9Jtie5Osm9+vPXJXlMkvdk+pUoSQ5Nsqt3Pz7JxUlum2Rbki8neXJ/7Y+SPL1333HmPZ6b5Gm9+5Qkr8/0o8Pdk1y82W2wpDZtSe7fn788yTOS7EpyaO+3I8l7evdfzwx7m0z/Xmp7kgtm2vyTSW6X5JZJPpXkyP65vC/Jrftwz0zym0numORjue4shdv3v+cnOWK23ya0ywUzz38i063Uqy8Pf5PkR/prV603TJJ7J3nvzLQu6m0y224vTvILvftbktxq1bQfnuS0TP8y67Ak/y/J4UmO6cv1nft7fjDJD8+Zn39IcotVbfy7SR6z0i/Jx5Pcun+Gn0lyyOq2SHJCkuf07lsk2ZnkqCS/luQ/9/4HJbntBnxG/7ovjzfvz/9nksdlWp5/uvf7/Zl6T0nyiJnxT09ydO/+gSTvmhnub5Ic1J+fmOTcTAHv0CSfzvRlfkySf0xy1Mw0Vz6vG7RH1lgH9kM7rHxOt0pyQaZ1aluv86hVw3xbkoN794OSvKF3/2qmf8WWJPfMtJ3dsV7NmbYRv9y7/yjJebluW3v5nGXnl5P81cz7HzJnXs7LdevVC2bGPSbTL9TJ/G3QTyb5uyTfump+r/3Me70rn8njZqZ3YqYjFPOGX/ku+PdJXrreejOznp48Mz8r28FPJ/nO3u9VSZ7e6/5/M+O+JNP32Z7a/D/17vWGe0///O7Uxzkkyc2TvD/JH8/M67rfb/PmZ6aOQ+csgwf1977n6uHWq3cjHln/u26lTe/UP5Nt/fN5V5KHzbZp7154O5jk+5KcNlPHyvb3lCSPWGv5WG8ZHO2R5B6Z1pOVZeGQTOvx8f35LyZ58+p1sD9f2aYekzW+6+Ysjy3Jcb27kvx9km39+V+kfz8cSI89tdPMcnZ0b5PXZc42sD+/oK8vi67/N5n2zhrbkd79nuxhu7tqWr+X5L/PPL/DbPvmhvuhPzqzntwuySXp36eb/XBkdu9d0lo7p3eflenDXs+7W2tXttZ2Z1rB/7r3P39m3O+u6QjL+Ul+IdOGd8WbW2vfbK1dlClEHIg+3Vr7QO/+80wbvrV8IMkf9l/nbt/mn1p5emvty621r2UKbndNcr9MO0wfqKpzkhzf+385ydcy/eL9c0m+OvM+p9R0FOygGzV3+8dP9MfZST6S5LsyfSnscZjW2tlJvr2m6we/N8kXW2ufXjXuB5M8u6qemeSurbV/WvX6Dyd5TWvtmtba5Unem+T7+2tnttY+01r7ZpJzMn+dOC/Jq6vqMZmCykq9z+qfx3syfdndpb92WmvtC2u0w+P6OB/KFJyOTvLhJE+o6ZTN72mtXTln3P3tgZl2FD/c63lgku9I8s+ZwmiyxjaipiNCP5Tk9X3cP83048CK17frnyr1ltbaP7XptKp3J7lv739ma+2SObXNa4+11oEb61f6L+JnZPqR5Oj+Xu9bqW3ms7xdpnm+IFMAXdnW/UimdT+ttfMyLS9ZoOZT+9/zk3xoZlv79aq6/ao6H5TkT1e2GauXrz787VtrK2di/Nka8ztvG/SgJK9orX113rRnvGbm7w+uMcysN/a/s8vReuvN+Ul+vKYjff+mtfblJP8q0/fWx/swr8wU2K9O8vYkP11VByf5qSRvyZ7b/C/730WWp/tm+iHtC621b2QKr7P29P02b37mOa4f7Tk70zI177qxZS3/e2Ot77qVNv3+TD/c7u6fz6szrRur7c128JNJvqOqXlxVD0nylVXTmrt8zLw+bxkczQMybVM/l1y7fv5gpqCTTOv6evsdKxb5rkuSa5K8ob9X69N/TN/G/GCS/71PczGOee30XZmWs0/0NvnzBaaz6Pp/U2vvPe0z72m7u+JBSf5k5Ulr7YvrvWlr7b1Jjq6qbUkenenH6C1xedPBm13AgL4+031NpqMRV+e6U7Zvuc7w35x5/s1c1/6nZPr19dyqenymX7bmjX+D0zcPEG3O87lt2lp7flW9NclDM+2UPDhTGJ21+jM6OFPbndZae/TqN6+q+2YKIo9I8tQkD2itPbmqfiDTDt5ZVfV9rbXP7+sM7geV5L+11v50H4d5fab5+xe5bsfpWq21v6jptNafSvK2qnpSa+1dC9Y2r71X+6lMO0g/nek0oO/p9T68tfax683E1O7/uMZ7VaYjBe+4wQtVP9Lf55Sq+sPW2qsWrH9fVZJXttZ+Y1Udz+hfqMna7XGzJF9qrd1rjWmvnv9568i84aYXW3vf6vZI8sWssQ7sq5que3pQkh9srX21pssBVm8DZ/1Oph/4fram63Hes6e3yPo1z25PV29rl/L9tsY2aOHR1+hey8o8zS5Hc9ebXtvHq+o+vbbn1nR691vWmf5rM23zvpBkZ2vtyn5K4HptvrLM7Wm4Raz7/TZvflprvz07TFUdlekI5/e31r5Y07Xp85bB/VHvjbVX6/E69mo72H/EfHCSJyc5LtORyEXNWwYPZNfue1TVzTKdqbRike+6JPnaqh8jX5HpQMbXMoXqLREAlmjRdloxu7+X9PV3kfW/u6m191rbkY3wqkxn8DwqyRM28H3X5cjs/rEr0xGaZAoMe+u2SS6rqptnOjJ7U3OXqlo5SvHvkvxtrt+mD18ZsKru1lo7v7X2e5l+hV70Gp4zkty/+nVq/VqM7+xHyG7XWntbkv+Y5Htn3udDrbXfTLI70xGnjXRlpuVixTuS/GJdd03aEVX17avGWW+Yv8y08XlE5vxKV1XfkeSTrbUXZdr5veeqQd6f5Odruv5qW6ZgeuYiM9J3CI5srb0706l9t8t0euY7kjyt7zynqu69wOTekeSX+7qS/hneuqrumunU0pOTvDTJfRap7UY6PckjVtq4qg7pdazl2s+0tfaVJJdU1SP7uNV3ONdybFXdsqrumOnHrg+vV9ga7TF3HVhgPtdzu0xH+r9a0/V09+v9z0jyIz1opPr9Afrwl/bux89M532Z1v1U1XfnuuVvf9Z8WpIn9aOQszUlSVprX0rypapa+ZV77rZ4jW3QaZmOiK1cu3TIvHGT/PzM3w/u43ysud5U1Z2SfLW19ueZTpO+T6bLKLbXddfoPjbTmRXpf++T5ImZgm2yeJsvMtyHk/xoVd2ht/vDV09kPWvMT3L97eO3ZQqDX66qwzKd8p05wy1j+d9b877rZp2Zqb0OraqDMh39eG9uaOHtYE3Xvt2stfaGJM/JDbeN6y0fB4p3Zboe+Y7Jtevn32X6Tkymdf39vXtXrtv3+JlMp2nuyerv6+tprf1DpkttnpMpaN0U/X2m5exu/fnsj0q70pfLHl5XvjcWWf9v4CbQ3nvajiy63T0t1783xB1WvT6vnU/JdJlK+hk1W8JN4Ve2jfDCJK+r6eYnb92H8f9LplOFdve/a66kB6iPJXlKVb0802nBL8n0pf6yqvqdXP/ozdOr6scyHXm5MNPpI4dnD1pru2s66v2a6je3yLShuzLJW6rqlpl+7f7V/toLaroJUmUKLefeqDncS621z1fVB2o6HfN/t9Z+var+dZIP9n3YqzL9OnbFzDjvXGuY1tqFNd2o5tLW2mVz3vK4JI+tqm8k+Wym6/JmvSnT6TrnZvoV8D+11j5bi90Q5KAkf15Vt8vUni9qrX2pf7b/Pcl5PfBekmRPdzZ8aaZTlj7Sd+Z3J3lYpoD3673+qzJdk7hUrbWLquo5Sd7Z6/9GZr4Y5nhtkpNrOj31EZl2oF7Sp3Hz/vpay9l5mU4vPjTJ77TW/mEPO+LHZFV7rLMOfHz+JBby9iRPrqqPZlqPz0iuXd9OSPLG3jZXJPnxTNcQv7LP8+y28iVJXtGn89FMpzSut97uS80vTfKdmZa3byQ5Ocnqm2I8IcnLq6oleeca07nBNqi19vWquleSnVX1z0neluTZc8a9Q1Wdl+nIxb4eIVxvvfmeTNuub2ZaHn+5tfa1qnpCptO7D860o/O/kqS1dk1NN316fKbTbhdu80WGa61dWlW/m2l7/oVMO7RrnSo4zw3mp/c/Kcnbq+ofWms/VlVn92l/OtNp4FljuD3O15LN+6679kZkrbXLqupZmdb1SvLW1tq8I+t7sx08ItO6tXLw4npnkqy3fBwo+vff85K8t6quyXQ6+tMytcuvZ2q/laNMJ2faJzg30/ZtkaPm11vO1hjm1Zmu4/zojZmXUfXl7IQkb62qr2b68WBlX/cNmU6bvzDTPvDKOrnQ+r/GWx7I7T1vO3KtvdjuPjfJn/T9zGuS/Fauu6xg7n5oa+3y/j395iXM1z7zr3kAtrAa9F+3cH012L+J2V+q6jattat6UHpTpht9vWmz69poNdC/uWD/q+lusme31l622bXcFNzU23tZ292azj46P8l91rmGecM5zRgAWJYTa7pR0QWZjiK/eVOrgQ1WVWdlunRikZsecSNp7yRL2O5W1YMynTn14q0UZBNHZgEAABiQI7MAAAAMR5gFAABgOMIsAAAAwxFmAWCLqaoTq+oZm10HAGxlwiwAAADDEWYBYJNV1eOq6ryqOreq/mzVa0+sqg/3197Q/9dfquqRVXVB7/++3u8eVXVmVZ3Tp3f0ZswPAGwE/5oHADZRVd0j0z+2/6HW2ueq6pAkv5LkqtbaC6vqjq21z/dhn5vk8tbai6vq/CQPaa1dWlW3b619qapenOSM1tqrq+pbkhzUWvunzZo3AFgmR2YBYHM9IMnrW2ufS5LW2hdWvf7dVfX+Hl5/Ick9ev8PJDmlqp6Y5KDe74NJnl1Vz0xyV0EWgAOZMAsAW9spSZ7aWvueJL+V5JZJ0lp7cpLnJDkyyVn9CO5fJPmZJP+U5G1V9YDNKRkAlk+YBYDN9a4kj6yqOyZJP8141m2TXFZVN890ZDZ9uLu11j7UWvvNJLuTHFlV35Hkk621FyV5S5J7bsgcAMAmOHizCwCAm7LW2oVV9bwk762qa5KcnWTXzCD/JcmHMgXWD2UKt0nygn6Dp0pyepJzkzwzyWOr6htJPpvkdzdkJgBgE7gBFAAAAMNxmjEAAADDEWYBAAAYjjALAADAcIRZAAAAhiPMAgAAMBxhFgAAgOEIswAAAAzn/wPGoLUrDtZFhAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (c:Class)\n",
        "RETURN c.name as class, size((c)<--()) as count\n",
        "ORDER BY count DESC LIMIT 10;\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"class\", y=\"count\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UQUPPCV6UjjO"
      },
      "source": [
        "The wikification process found almost 250 human entities and 100 business entities. We will assign a secondary label to Person and Business entities to simplify our further cypher queries."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "tpRjYLF3UjjO",
        "outputId": "d3c6d47f-d4a1-4e5d-9be4-a27648fa33de"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 14,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (e:Entity)-[:INSTANCE_OF]->(c:Class)\n",
        "WHERE c.name in [\"human\"]\n",
        "SET e:Person;\n",
        "\"\"\")\n",
        "run_query(\"\"\"\n",
        "MATCH (e:Entity)-[:INSTANCE_OF]->(c:Class)\n",
        "WHERE c.name in [\"business\", \"enterprise\"]\n",
        "SET e:Business;\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hEWAzaFIUjjP"
      },
      "source": [
        "With the added secondary label, we can now easily examine the most frequently mentioned business entities."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "uJbgSdFdUjjP",
        "outputId": "d245a94a-3539-433d-9aa8-c957c37e3d41"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[Text(0, 0, 'Apple Inc.'),\n",
              " Text(1, 0, 'The Walt Disney Company'),\n",
              " Text(2, 0, 'Amazon (company)'),\n",
              " Text(3, 0, 'Google'),\n",
              " Text(4, 0, 'GameStop'),\n",
              " Text(5, 0, 'Netflix'),\n",
              " Text(6, 0, 'Marvel Comics'),\n",
              " Text(7, 0, 'Sony'),\n",
              " Text(8, 0, 'Best Buy'),\n",
              " Text(9, 0, 'Microsoft')]"
            ]
          },
          "execution_count": 31,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (b:Business)\n",
        "RETURN b.title as business, size((b)<-[:HAS_ENTITY]-()) as mentions\n",
        "ORDER BY mentions DESC\n",
        "LIMIT 10\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"business\", y=\"mentions\", data=data, color=\"blue\")\n",
        "ax.set_xticklabels(ax.get_xticklabels(), rotation=30)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "h2FOjUA8UjjP"
      },
      "source": [
        "We already knew that Apple and Amazon were discussed a lot. Some of you already know that this was an exciting week on the stock market, as we can see lots of mentions of GameStop.\n",
        "\n",
        "Just because we can, let's also fetch the industries of the business entities from the WikiData API."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "V-1QXkXBUjjP",
        "outputId": "d63a813e-dc45-47a9-b442-1adc1baba82b"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (e:Business)\n",
        "// Prepare a SparQL query\n",
        "WITH 'SELECT * WHERE{ ?item rdfs:label ?name . filter (?item = wd:' + e.wikiDataItemId + ') filter (lang(?name) = \"en\" ) . + \n",
        "      'OPTIONAL{ ?item wdt:P452 [rdfs:label ?industry] .filter (lang(?industry)=\"en\")}}' AS sparql, e\n",
        "// make a request to Wikidata\n",
        "CALL apoc.load.jsonParams(\n",
        "    \"https://query.wikidata.org/sparql?query=\" + \n",
        "    sparql,\n",
        "     { Accept: \"application/sparql-results+json\"}, null)\n",
        "YIELD value\n",
        "UNWIND value['results']['bindings'] as row\n",
        "FOREACH(ignoreme in case when row['industry'] is not null then [1] else [] end | \n",
        "        MERGE (i:Industry{name:row['industry']['value']})\n",
        "        MERGE (e)-[:PART_OF_INDUSTRY]->(i));\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZA_s9wmJUjjQ"
      },
      "source": [
        "### Exploratory graph analysis\n",
        "Our data pipeline ingestion is complete. Now we can have some fun and explore our knowledge graph. First, we will examine the most co-occurrent entities of the most frequently mentioned entity, which is Apple Inc in my case."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "h_2baeJQUjjQ",
        "outputId": "6c9686da-f553-4b8a-807d-cc356ccf19eb"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (b:Business)\n",
        "WITH b, size((b)<-[:HAS_ENTITY]-()) as mentions\n",
        "ORDER BY mentions DESC \n",
        "LIMIT 1\n",
        "MATCH (other_entities)<-[:HAS_ENTITY]-()-[:HAS_ENTITY]->(b)\n",
        "RETURN other_entities.title as entity, count(*) as count\n",
        "ORDER BY count DESC\n",
        "LIMIT 10;\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"entity\", y=\"count\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "evHqPlaKUjjQ"
      },
      "source": [
        "Nothing spectacular here. Apple Inc appears in sections where also iPhone, Apple Watch, and VR are being mentioned. We can look at some more exciting news. I was searching for any relevant tags of articles that might be interesting. CNET has many specific tags, but the Stock Market tag stood out as more broad and very relevant in these times. Let's check the most frequently mentioned industries in the Stock Market category of articles."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "XFy5CRd8UjjR",
        "outputId": "85c69ad8-3c7c-4d6c-8e50-e23b48bc74db"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[Text(0, 0, 'retail'),\n",
              " Text(1, 0, 'video game industry'),\n",
              " Text(2, 0, 'e-commerce'),\n",
              " Text(3, 0, 'conglomerate'),\n",
              " Text(4, 0, 'consumer electronics'),\n",
              " Text(5, 0, 'technology industry'),\n",
              " Text(6, 0, 'software development'),\n",
              " Text(7, 0, 'software industry'),\n",
              " Text(8, 0, 'telecommunications industry'),\n",
              " Text(9, 0, 'automotive industry')]"
            ]
          },
          "execution_count": 32,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (t:Tag)<-[:HAS_TAG]-()-[:HAS_SECTION]->()-[:HAS_ENTITY]->(entity:Business)-[:PART_OF_INDUSTRY]->(industry)\n",
        "WHERE t.name = \"Stock Market\"\n",
        "RETURN industry.name as industry, count(*) as mentions\n",
        "ORDER BY mentions DESC\n",
        "LIMIT 10\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"industry\", y=\"mentions\", data=data, color=\"blue\")\n",
        "ax.set_xticklabels(ax.get_xticklabels(), rotation=30)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "thj-mAovUjjR"
      },
      "source": [
        "Retail is by far the most mentioned, next is the video game industry, and then some other industries that are mentioned only once. Next, we will check the most mentioned businesses or persons in the Stock Market category."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "-BJHzE-mUjjR",
        "outputId": "45a34d34-d527-471b-cc7f-d4032053e417"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[Text(0, 0, 'GameStop'),\n",
              " Text(1, 0, 'Jim Cramer'),\n",
              " Text(2, 0, 'Elon Musk'),\n",
              " Text(3, 0, 'Alexandria Ocasio-Cortez'),\n",
              " Text(4, 0, 'Ubisoft'),\n",
              " Text(5, 0, 'Tesla, Inc.'),\n",
              " Text(6, 0, 'Rashida Tlaib'),\n",
              " Text(7, 0, 'Donald Trump'),\n",
              " Text(8, 0, 'Etsy'),\n",
              " Text(9, 0, 'Jon Stewart')]"
            ]
          },
          "execution_count": 33,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (t:Tag)<-[:HAS_TAG]-()-[:HAS_SECTION]->()-[:HAS_ENTITY]->(entity)\n",
        "WHERE t.name = \"Stock Market\" AND (entity:Person OR entity:Business)\n",
        "RETURN entity.title as entity, count(*) as mentions\n",
        "ORDER BY mentions DESC\n",
        "LIMIT 10\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"entity\", y=\"mentions\", data=data, color=\"blue\")\n",
        "ax.set_xticklabels(ax.get_xticklabels(), rotation=30)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "14JOat9zUjjS"
      },
      "source": [
        "Ok, so GameStop is huge this weekend with more than 40 mentions. Very far behind are Jim Cramer, Elon Musk, and Alexandria Ocasio-Cortez. We will try to understand why GameStop is so huge by looking at the co-occurring entities."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "MrVZdvgsUjjS",
        "outputId": "e1ed37e1-9f01-4fab-8074-dcde0d6e6055"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (b:Business{title:\"GameStop\"})<-[:HAS_ENTITY]-()-[:HAS_ENTITY]->(other_entity)\n",
        "RETURN other_entity.title as entity, count(*) as mentions\n",
        "ORDER BY mentions DESC\n",
        "LIMIT 10\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"entity\", y=\"mentions\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JWssImjkUjjT"
      },
      "source": [
        "The most frequently mentioned entities in the same section as GameStop are Stock, Reddit, and US dollar. If you look at the news you might see that the results make sense. I would venture a guess that the AMC (TV channel) was wrongly identified and should probably be the AMC Theaters company. There will always be some mistakes in the NLP process. We can filter the results a bit and look for the most co-occurring person or business entities of GameStop."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "daRv0UNYUjjT",
        "outputId": "23f82f45-ab1a-445b-e9b1-d8c824b685b8"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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MAQBFgAAgCEIsAAAAAxBgAUAAGAIAiwAAABDEGABAAAYggALAADAEARYAAAAhiDAAgAAMAQBFgAAgCEIsAAAAAxBgAUAAGAIAiwAAABDEGABAAAYggALAADAEARYAAAAhiDAAgAAMAQBFgAAgCEIsAAAAAxBgAUAAGAIAiwAAABDEGABAAAYggALAADAEARYAAAAhiDAAgAAMAQBFgAAgCEIsAAAAAxBgAUAAGAIAiwAAABDEGABAAAYggALAADAEARYAAAAhiDAAgAAMAQBFgAAgCEIsAAAAAxBgAUAAGAIAiwAAABDEGABAAAYggALAADAEARYAAAAhiDAAgAAMAQBFgAAgCEIsAAAAAxBgAUAAGAIAiwAAABDWGmAraoHVtXFVXVJVT1pg+E3rKpXzMPPrKptqywPAAAA41pZgK2qg5I8L8mDktwpyaOq6k7rRvv5JJ/u7m9J8qwkT19VeQAAABjbKq/A3iPJJd39we7+UpKXJzl23TjHJjlp7n51kh+sqlphmQAAABjUKgPsEUk+svD6srnfhuN091eSXJHklissEwAAAIPasr8LsIyqOj7J8fPLK6vq4v1ZnhU7PMm/7+9C7ArXzK9hqPpTd9cwVN0l6m+doepP3V3DUHWXqL911N/Yhqo/dXcNQ9Vdssv1d7vNBqwywH40yZELr28799tonMuqakuSQ5N8cv2EuvuEJCesqJwHlKo6u7u37+9ysHvU37jU3djU37jU3djU39jU37iuz3W3yibE705ydFXdvqoOSfLIJCevG+fkJD87dz8syZu6u1dYJgAAAAa1siuw3f2VqnpcklOTHJTkxO6+sKqemuTs7j45yV8keXFVXZLkU5lCLgAAAFzLSu+B7e5Tkpyyrt/vLHR/McnDV1mGAV0vmkpfh6m/cam7sam/cam7sam/sam/cV1v66602AUAAGAEq7wHFgAAAPaaAzrAVtVDq6qr6o4L/bZV1QX7qTzHVdVzNxn2kKp60i5O795VdVZVfWD+O37n79ql6T+1qu6/i++5dVW9vKr+parOqapTqupbd+H9h1XVL+16aVevqr5aVect/D1p7n9GVe3xU9zm70cvLvOF7/DDdmN6962q1+9puUZXVVdW1TdV1av3cDqPrqoLqur8qnpPVf3G3ioju6aqbrmwHv5bVX104fUhO3jfptv/qvrWeXv1z1V1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\n",
            "text/plain": [
              "<Figure size 1152x648 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "data = run_query(\"\"\"\n",
        "MATCH (b:Business{title:\"GameStop\"})<-[:HAS_ENTITY]-()-[:HAS_ENTITY]->(other_entity:Person)\n",
        "RETURN other_entity.title as entity, count(*) as mentions\n",
        "ORDER BY mentions DESC\n",
        "LIMIT 10\n",
        "\"\"\")\n",
        "\n",
        "fig, ax = pyplot.subplots(figsize=(16,9))\n",
        "ax = sns.barplot(x=\"entity\", y=\"mentions\", data=data, color=\"blue\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MQ-OjIP0UjjT"
      },
      "source": [
        "Alexandria Ocasio-Cortez and Elon Musk each appear in three sections with GameStop. Let's examine the text where AOC co-occurs with GameStop."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "D6x6MRU7UjjT",
        "outputId": "6137d80a-a0bb-4a23-9bba-b05e830934c4"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>text</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Rep. Alexandria Ocasio-Cortez took to Twitch t...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Rep. Alexandria Ocasio-Cortez, a Democrat from...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Amid the recent stock market chaos, Robinhood ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                text\n",
              "0  Rep. Alexandria Ocasio-Cortez took to Twitch t...\n",
              "1  Rep. Alexandria Ocasio-Cortez, a Democrat from...\n",
              "2  Amid the recent stock market chaos, Robinhood ..."
            ]
          },
          "execution_count": 22,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (b:Business{title:\"GameStop\"})<-[:HAS_ENTITY]-(section)-[:HAS_ENTITY]->(p:Person{title:\"Alexandria Ocasio-Cortez\"})\n",
        "RETURN section.text as text\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cuRqC9K8UjjU"
      },
      "source": [
        "### Graph data science\n",
        "So far, we have only done a couple of aggregations using the Cypher query language. As we are utilizing a knowledge graph to store our information, let's execute some graph algorithms on it. Neo4j Graph Data Science library is a plugin for Neo4j that has at the moment more than 50 graph algorithms available. The algorithm range from community detection and centrality to node embedding and graph neural network categories.\n",
        "We have already inspected some co-occurring entities so far. Now, we will infer a co-occurrence network of persons within our knowledge graph. This process basically translates indirect relationships, where two entities are mentioned in the same section, to a direct relationship between those two entities. The cypher query for inferring the person co-occurrence network is:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "9R1YuXbPUjjU",
        "outputId": "e22d4b25-93ed-43a4-90cf-2251609f2186"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 23,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (s:Person)<-[:HAS_ENTITY]-()-[:HAS_ENTITY]->(t:Person)\n",
        "WHERE id(s) < id(t)\n",
        "WITH s,t, count(*) as weight\n",
        "MERGE (s)-[c:CO_OCCURENCE]-(t)\n",
        "SET c.weight = weight\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "J39ZDxWtUjjU"
      },
      "source": [
        "The first graph algorithm we will use is the Weakly Connected Components algorithm. It is used to identify disconnected components or islands within the network."
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "run_query(\"\"\"\n",
        "CALL gds.graph.project('co-occurrence', 'Person', 'CO_OCCURRENCE')\n",
        "\"\"\")"
      ],
      "metadata": {
        "id": "LRi9fzN1VS3y"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kD4n7hMvUjjU",
        "outputId": "f91d36ca-e7c5-47d9-b68d-be739cc408cf"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>writeMillis</th>\n",
              "      <th>nodePropertiesWritten</th>\n",
              "      <th>componentCount</th>\n",
              "      <th>componentDistribution</th>\n",
              "      <th>postProcessingMillis</th>\n",
              "      <th>createMillis</th>\n",
              "      <th>computeMillis</th>\n",
              "      <th>configuration</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>6</td>\n",
              "      <td>239</td>\n",
              "      <td>134</td>\n",
              "      <td>{'p99': 7, 'min': 1, 'max': 30, 'mean': 1.7835...</td>\n",
              "      <td>3</td>\n",
              "      <td>8</td>\n",
              "      <td>1</td>\n",
              "      <td>{'writeConcurrency': 4, 'seedProperty': None, ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   writeMillis  nodePropertiesWritten  componentCount  \\\n",
              "0            6                    239             134   \n",
              "\n",
              "                               componentDistribution  postProcessingMillis  \\\n",
              "0  {'p99': 7, 'min': 1, 'max': 30, 'mean': 1.7835...                     3   \n",
              "\n",
              "   createMillis  computeMillis  \\\n",
              "0             8              1   \n",
              "\n",
              "                                       configuration  \n",
              "0  {'writeConcurrency': 4, 'seedProperty': None, ...  "
            ]
          },
          "execution_count": 24,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "CALL gds.wcc.write(co-occurrence,{\n",
        "    writeProperty:'wcc'})\n",
        "YIELD componentCount, componentDistribution\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oF8_9uTkUjjU"
      },
      "source": [
        "The algorithm found 134 disconnected components within our graph. The p50 value is the 50th percentile of the community size. Most of the components consist of a single node. This implies that they don't have any CO_OCCURENCE relationships. The largest island of nodes consists of 30 members. We will mark its members with a secondary label."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kzRygtmWUjjU",
        "outputId": "45054508-3aaa-4dd6-c414-38f054a1795a"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "Empty DataFrame\n",
              "Columns: []\n",
              "Index: []"
            ]
          },
          "execution_count": 25,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "MATCH (p:Person)\n",
        "WITH p.wcc as wcc, collect(p) as members\n",
        "ORDER BY size(members) DESC LIMIT 1\n",
        "UNWIND members as member\n",
        "SET member:LargestWCC\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1js7_S9AUjjV"
      },
      "source": [
        "We will further analyze the largest component by examining its community structure and trying to find the most central nodes. When you have a plan to run multiple algorithms on the same projected graph, it is better to use a named graph. The relationship in the co-occurrence network will be treated as undirected."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "QzxCJRBZUjjV",
        "outputId": "3c291533-2a37-45d7-afcc-b5fa8e6a637d"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>nodeProjection</th>\n",
              "      <th>relationshipProjection</th>\n",
              "      <th>graphName</th>\n",
              "      <th>nodeCount</th>\n",
              "      <th>relationshipCount</th>\n",
              "      <th>createMillis</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>{'LargestWCC': {'properties': {}, 'label': 'La...</td>\n",
              "      <td>{'CO_OCCURENCE': {'orientation': 'UNDIRECTED',...</td>\n",
              "      <td>person-cooccurence</td>\n",
              "      <td>30</td>\n",
              "      <td>114</td>\n",
              "      <td>14</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                      nodeProjection  \\\n",
              "0  {'LargestWCC': {'properties': {}, 'label': 'La...   \n",
              "\n",
              "                              relationshipProjection           graphName  \\\n",
              "0  {'CO_OCCURENCE': {'orientation': 'UNDIRECTED',...  person-cooccurence   \n",
              "\n",
              "   nodeCount  relationshipCount  createMillis  \n",
              "0         30                114            14  "
            ]
          },
          "execution_count": 26,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "CALL gds.graph.project('person-cooccurence', 'LargestWCC', \n",
        "  {CO_OCCURENCE:{orientation:'UNDIRECTED'}}, {relationshipProperties:['weight']})\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VL3PmMfrUjjV"
      },
      "source": [
        "First, we will run the PageRank algorithm, which will help us identify the most central nodes."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "w7KC5JrFUjjV",
        "outputId": "fd40e480-5eda-4381-aadc-0955a262bb04"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>writeMillis</th>\n",
              "      <th>nodePropertiesWritten</th>\n",
              "      <th>ranIterations</th>\n",
              "      <th>didConverge</th>\n",
              "      <th>centralityDistribution</th>\n",
              "      <th>postProcessingMillis</th>\n",
              "      <th>createMillis</th>\n",
              "      <th>computeMillis</th>\n",
              "      <th>configuration</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>2</td>\n",
              "      <td>30</td>\n",
              "      <td>20</td>\n",
              "      <td>False</td>\n",
              "      <td>{'p1': 0.3021354675292969, 'max': 4.2606487274...</td>\n",
              "      <td>3</td>\n",
              "      <td>1</td>\n",
              "      <td>177</td>\n",
              "      <td>{'maxIterations': 20, 'writeConcurrency': 4, '...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   writeMillis  nodePropertiesWritten  ranIterations  didConverge  \\\n",
              "0            2                     30             20        False   \n",
              "\n",
              "                              centralityDistribution  postProcessingMillis  \\\n",
              "0  {'p1': 0.3021354675292969, 'max': 4.2606487274...                     3   \n",
              "\n",
              "   createMillis  computeMillis  \\\n",
              "0             1            177   \n",
              "\n",
              "                                       configuration  \n",
              "0  {'maxIterations': 20, 'writeConcurrency': 4, '...  "
            ]
          },
          "execution_count": 27,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "CALL gds.pageRank.write('person-cooccurence', {relationshipWeightProperty:'weight', writeProperty:'pagerank'})\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tqPznQiKUjjV"
      },
      "source": [
        "Next, we will run the Louvain algorithm, which is a community detection algorithm."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "6Hfek7GZUjjW",
        "outputId": "6d95578c-f694-47f2-d7ca-2c42d1de4956"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>writeMillis</th>\n",
              "      <th>nodePropertiesWritten</th>\n",
              "      <th>modularity</th>\n",
              "      <th>modularities</th>\n",
              "      <th>ranLevels</th>\n",
              "      <th>communityCount</th>\n",
              "      <th>communityDistribution</th>\n",
              "      <th>postProcessingMillis</th>\n",
              "      <th>createMillis</th>\n",
              "      <th>computeMillis</th>\n",
              "      <th>configuration</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>2</td>\n",
              "      <td>30</td>\n",
              "      <td>0.552532</td>\n",
              "      <td>[0.5419501133786848, 0.5525321239606953]</td>\n",
              "      <td>2</td>\n",
              "      <td>5</td>\n",
              "      <td>{'p99': 10, 'min': 3, 'max': 10, 'mean': 6.0, ...</td>\n",
              "      <td>2</td>\n",
              "      <td>0</td>\n",
              "      <td>77</td>\n",
              "      <td>{'maxIterations': 10, 'writeConcurrency': 4, '...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   writeMillis  nodePropertiesWritten  modularity  \\\n",
              "0            2                     30    0.552532   \n",
              "\n",
              "                               modularities  ranLevels  communityCount  \\\n",
              "0  [0.5419501133786848, 0.5525321239606953]          2               5   \n",
              "\n",
              "                               communityDistribution  postProcessingMillis  \\\n",
              "0  {'p99': 10, 'min': 3, 'max': 10, 'mean': 6.0, ...                     2   \n",
              "\n",
              "   createMillis  computeMillis  \\\n",
              "0             0             77   \n",
              "\n",
              "                                       configuration  \n",
              "0  {'maxIterations': 10, 'writeConcurrency': 4, '...  "
            ]
          },
          "execution_count": 28,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "run_query(\"\"\"\n",
        "CALL gds.louvain.write('person-cooccurence', {relationshipWeightProperty:'weight', writeProperty:'louvain'})\n",
        "\"\"\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_sVv-eUXUjjW"
      },
      "source": [
        "### Conclusion\n",
        "I really love how NLP and knowledge graphs are a perfect match. Hopefully, I have given you some ideas and pointers on how you can go about implementing your data pipeline and storing results in a form of a knowledge graph. Let me know what do you think!"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kGg9UbvmUjjW"
      },
      "outputs": [],
      "source": [
        ""
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "nlp",
      "language": "python",
      "name": "nlp"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.9"
    },
    "colab": {
      "name": "CNET - News Wikification.ipynb",
      "provenance": [],
      "include_colab_link": true
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}